package Leetcode.lc148;

import Leetcode.tools.ListNode;

import javax.lang.model.type.ArrayType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/***
 * 给你链表的头结点 head ，请将其按 升序 排列并返回 排序后的链表 。
 */
public class Sloution {
    public ListNode sortList(ListNode head) {
        if (head == null || head.next == null) {
            return head; // 如果链表为空或只有一个节点，直接返回
        }

        // 将链表的值存储到数组中
        List<Integer> list = new ArrayList<>();
        ListNode cur = head;
        while (cur != null) {
            list.add(cur.val);
            cur = cur.next;
        }

        // 对数组进行排序
        Integer[] array = list.toArray(new Integer[0]); // 直接使用 list.toArray 方法
        Arrays.sort(array);

        // 重新构建链表
        ListNode dummy = new ListNode(0); // 创建虚拟头节点
        cur = dummy;
        for (Integer val : array) {
            cur.next = new ListNode(val);
            cur = cur.next;
        }

        return dummy.next;
    }
}
